{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 323,
   "id": "4f34fe74",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   种植地块  作物编号 作物名称    作物类型  种植面积/亩 种植季次\n",
      "0    A1     6   小麦      粮食    80.0   单季\n",
      "1    A2     7   玉米      粮食    55.0   单季\n",
      "2    A3     7   玉米      粮食    35.0   单季\n",
      "3    A4     1   黄豆  粮食（豆类）    72.0   单季\n",
      "4    A5     4   绿豆  粮食（豆类）    68.0   单季\n",
      "..  ...   ...  ...     ...     ...  ...\n",
      "82   F3    28  小青菜     蔬菜      0.3  第二季\n",
      "83   F3    30  生菜      蔬菜      0.3  第二季\n",
      "84   F4    19   芸豆  蔬菜（豆类）     0.6  第一季\n",
      "85   F4    34   芹菜     蔬菜      0.3  第二季\n",
      "86   F4    23  菠菜      蔬菜      0.3  第二季\n",
      "\n",
      "[87 rows x 6 columns]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "fujian2_path = r\"..\\data\\附件2.xlsx\"\n",
    "\n",
    "fujian1_path = r\"..\\data\\附件1.xlsx\"\n",
    "\n",
    "fujian2 = pd.read_excel(fujian2_path, sheet_name=None)\n",
    "\n",
    "fujian1 = pd.read_excel(fujian1_path, sheet_name=None)\n",
    "\n",
    "fujian2_sheet1 = fujian2['2023年的农作物种植情况']\n",
    "\n",
    "# 预处理1\n",
    "fujian2_sheet1['种植地块'] = fujian2_sheet1['种植地块'].ffill()\n",
    "\n",
    "print(fujian2_sheet1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 324,
   "id": "17a21214",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      序号 作物编号 作物名称  地块类型 种植季次    亩产量/斤  种植成本/(元/亩)  销售单价/(元/斤)\n",
      "0      1    1   黄豆   平旱地   单季    400.0       400.0   2.50-4.00\n",
      "1      2    2   黑豆   平旱地   单季    500.0       400.0   6.50-8.50\n",
      "2      3    3   红豆   平旱地   单季    400.0       350.0   7.50-9.00\n",
      "3      4    4   绿豆   平旱地   单季    350.0       350.0   6.00-8.00\n",
      "4      5    5   爬豆   平旱地   单季    415.0       350.0   6.00-7.50\n",
      "..   ...  ...  ...   ...  ...      ...         ...         ...\n",
      "102  103   30  生菜   智慧大棚  第二季   4500.0      2200.0   5.40-7.20\n",
      "103  104   31   辣椒  智慧大棚  第二季   1800.0      1300.0  7.20-10.20\n",
      "104  105   32  空心菜  智慧大棚  第二季  11000.0      5500.0   3.60-7.20\n",
      "105  106   33  黄心菜  智慧大棚  第二季   5400.0      2750.0   4.80-6.00\n",
      "106  107   34   芹菜  智慧大棚  第二季   6000.0      1200.0   3.80-5.80\n",
      "\n",
      "[107 rows x 8 columns]\n"
     ]
    }
   ],
   "source": [
    "fujian2_sheet2 = fujian2['2023年统计的相关数据']\n",
    "\n",
    "fujian2_sheet2 = fujian2['2023年统计的相关数据'].iloc[:-3]\n",
    "print(fujian2_sheet2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 325,
   "id": "5ba570be",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   地块名称   地块类型  地块面积/亩\n",
      "0    A1    平旱地    80.0\n",
      "1    A2    平旱地    55.0\n",
      "2    A3    平旱地    35.0\n",
      "3    A4    平旱地    72.0\n",
      "4    A5    平旱地    68.0\n",
      "5    A6    平旱地    55.0\n",
      "6    B1     梯田    60.0\n",
      "7    B2     梯田    46.0\n",
      "8    B3     梯田    40.0\n",
      "9    B4     梯田    28.0\n",
      "10   B5     梯田    25.0\n",
      "11   B6     梯田    86.0\n",
      "12   B7     梯田    55.0\n",
      "13   B8     梯田    44.0\n",
      "14   B9     梯田    50.0\n",
      "15  B10     梯田    25.0\n",
      "16  B11     梯田    60.0\n",
      "17  B12     梯田    45.0\n",
      "18  B13     梯田    35.0\n",
      "19  B14     梯田    20.0\n",
      "20   C1    山坡地    15.0\n",
      "21   C2    山坡地    13.0\n",
      "22   C3    山坡地    15.0\n",
      "23   C4    山坡地    18.0\n",
      "24   C5    山坡地    27.0\n",
      "25   C6    山坡地    20.0\n",
      "26   D1    水浇地    15.0\n",
      "27   D2    水浇地    10.0\n",
      "28   D3    水浇地    14.0\n",
      "29   D4    水浇地     6.0\n",
      "30   D5    水浇地    10.0\n",
      "31   D6    水浇地    12.0\n",
      "32   D7    水浇地    22.0\n",
      "33   D8    水浇地    20.0\n",
      "34   E1  普通大棚      0.6\n",
      "35   E2  普通大棚      0.6\n",
      "36   E3  普通大棚      0.6\n",
      "37   E4  普通大棚      0.6\n",
      "38   E5  普通大棚      0.6\n",
      "39   E6  普通大棚      0.6\n",
      "40   E7  普通大棚      0.6\n",
      "41   E8  普通大棚      0.6\n",
      "42   E9  普通大棚      0.6\n",
      "43  E10  普通大棚      0.6\n",
      "44  E11  普通大棚      0.6\n",
      "45  E12  普通大棚      0.6\n",
      "46  E13  普通大棚      0.6\n",
      "47  E14  普通大棚      0.6\n",
      "48  E15  普通大棚      0.6\n",
      "49  E16  普通大棚      0.6\n",
      "50   F1   智慧大棚     0.6\n",
      "51   F2   智慧大棚     0.6\n",
      "52   F3   智慧大棚     0.6\n",
      "53   F4   智慧大棚     0.6\n"
     ]
    }
   ],
   "source": [
    "fujian1_sheet1 = fujian1['乡村的现有耕地']\n",
    "fujian1_sheet1 = fujian1_sheet1.iloc[:, :-1]\n",
    "print(fujian1_sheet1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 326,
   "id": "483fcfcf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    作物编号 作物名称    作物类型                                        种植耕地\n",
      "0      1   黄豆  粮食（豆类）                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "1      2   黑豆  粮食（豆类）                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "2      3   红豆  粮食（豆类）                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "3      4   绿豆  粮食（豆类）                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "4      5   爬豆  粮食（豆类）                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "5      6   小麦      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "6      7   玉米      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "7      8   谷子      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "8      9   高粱      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "9     10   黍子      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "10    11   荞麦      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "11    12   南瓜      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "12    13   红薯      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "13    14   莜麦      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "14    15   大麦      粮食                          平旱地\\n\\n梯田\\n\\n山坡地\\n\n",
      "15    16   水稻      粮食                                         水浇地\n",
      "16    17   豇豆  蔬菜（豆类）  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "17    18   刀豆  蔬菜（豆类）  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "18    19   芸豆  蔬菜（豆类）  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "19    20   土豆      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "20    21  西红柿      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "21    22   茄子      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "22    23  菠菜       蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "23    24   青椒      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "24    25   菜花      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "25    26   包菜      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "26    27  油麦菜      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "27    28  小青菜      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "28    29   黄瓜      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "29    30  生菜       蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "30    31   辣椒      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "31    32  空心菜      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "32    33  黄心菜      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "33    34   芹菜      蔬菜  水浇地    第一季\\n\\n普通大棚  第一季\\n\\n智慧大棚  第一季、第二季\\n\n",
      "34    35  大白菜      蔬菜                                  水浇地    第二季\n",
      "35    36  白萝卜      蔬菜                                  水浇地    第二季\n",
      "36    37  红萝卜      蔬菜                                  水浇地    第二季\n",
      "37    38  榆黄菇     食用菌                                   普通大棚  第二季\n",
      "38    39   香菇     食用菌                                   普通大棚  第二季\n",
      "39    40  白灵菇     食用菌                                   普通大棚  第二季\n",
      "40    41  羊肚菌     食用菌                                   普通大棚  第二季\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_23112\\3107759426.py:3: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n",
      "  fujian1_sheet2 = fujian1_sheet2.ffill()\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "fujian1_sheet2 = fujian1['乡村种植的农作物']\n",
    "fujian1_sheet2 = fujian1_sheet2.iloc[:-4, :-1]\n",
    "fujian1_sheet2 = fujian1_sheet2.ffill()\n",
    "print(fujian1_sheet2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 327,
   "id": "5668e62e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   种植地块  作物编号 作物名称    作物类型  种植面积/亩 种植季次  地块类型  地块面积/亩\n",
      "0    A1     6   小麦      粮食    80.0   单季   平旱地    80.0\n",
      "1    A2     7   玉米      粮食    55.0   单季   平旱地    55.0\n",
      "2    A3     7   玉米      粮食    35.0   单季   平旱地    35.0\n",
      "3    A4     1   黄豆  粮食（豆类）    72.0   单季   平旱地    72.0\n",
      "4    A5     4   绿豆  粮食（豆类）    68.0   单季   平旱地    68.0\n",
      "..  ...   ...  ...     ...     ...  ...   ...     ...\n",
      "82   F3    28  小青菜     蔬菜      0.3  第二季  智慧大棚     0.6\n",
      "83   F3    30  生菜      蔬菜      0.3  第二季  智慧大棚     0.6\n",
      "84   F4    19   芸豆  蔬菜（豆类）     0.6  第一季  智慧大棚     0.6\n",
      "85   F4    34   芹菜     蔬菜      0.3  第二季  智慧大棚     0.6\n",
      "86   F4    23  菠菜      蔬菜      0.3  第二季  智慧大棚     0.6\n",
      "\n",
      "[87 rows x 8 columns]\n"
     ]
    }
   ],
   "source": [
    "# 所有的附件表格初步预处理完成\n",
    "\n",
    "# 合并地块类型\n",
    "result_df = fujian2_sheet1.merge(fujian1_sheet1, how='left', left_on=['种植地块'], right_on=['地块名称'])\n",
    "\n",
    "result_df.drop(columns=['地块名称'], inplace=True)\n",
    "\n",
    "# print(result_df.columns)\n",
    "# print('作物编号' in result_df.columns)\n",
    "# 地块信息的 df\n",
    "print(result_df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 328,
   "id": "6dccfaa8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['平旱地' '梯田' '山坡地' '水浇地' '普通大棚' '智慧大棚']\n"
     ]
    }
   ],
   "source": [
    "result_df['地块类型'] = result_df['地块类型'].str.strip()\n",
    "print(result_df['地块类型'].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 329,
   "id": "a5cd11bc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>种植地块</th>\n",
       "      <th>作物编号</th>\n",
       "      <th>作物名称</th>\n",
       "      <th>作物类型</th>\n",
       "      <th>种植面积/亩</th>\n",
       "      <th>种植季次</th>\n",
       "      <th>地块类型</th>\n",
       "      <th>地块面积/亩</th>\n",
       "      <th>第一季度可种作物</th>\n",
       "      <th>第二季度可种作物</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>A1</td>\n",
       "      <td>6</td>\n",
       "      <td>小麦</td>\n",
       "      <td>粮食</td>\n",
       "      <td>80.0</td>\n",
       "      <td>单季</td>\n",
       "      <td>平旱地</td>\n",
       "      <td>80.0</td>\n",
       "      <td>黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>A2</td>\n",
       "      <td>7</td>\n",
       "      <td>玉米</td>\n",
       "      <td>粮食</td>\n",
       "      <td>55.0</td>\n",
       "      <td>单季</td>\n",
       "      <td>平旱地</td>\n",
       "      <td>55.0</td>\n",
       "      <td>黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A3</td>\n",
       "      <td>7</td>\n",
       "      <td>玉米</td>\n",
       "      <td>粮食</td>\n",
       "      <td>35.0</td>\n",
       "      <td>单季</td>\n",
       "      <td>平旱地</td>\n",
       "      <td>35.0</td>\n",
       "      <td>黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A4</td>\n",
       "      <td>1</td>\n",
       "      <td>黄豆</td>\n",
       "      <td>粮食（豆类）</td>\n",
       "      <td>72.0</td>\n",
       "      <td>单季</td>\n",
       "      <td>平旱地</td>\n",
       "      <td>72.0</td>\n",
       "      <td>黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>A5</td>\n",
       "      <td>4</td>\n",
       "      <td>绿豆</td>\n",
       "      <td>粮食（豆类）</td>\n",
       "      <td>68.0</td>\n",
       "      <td>单季</td>\n",
       "      <td>平旱地</td>\n",
       "      <td>68.0</td>\n",
       "      <td>黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...</td>\n",
       "      <td></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82</th>\n",
       "      <td>F3</td>\n",
       "      <td>28</td>\n",
       "      <td>小青菜</td>\n",
       "      <td>蔬菜</td>\n",
       "      <td>0.3</td>\n",
       "      <td>第二季</td>\n",
       "      <td>智慧大棚</td>\n",
       "      <td>0.6</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>F3</td>\n",
       "      <td>30</td>\n",
       "      <td>生菜</td>\n",
       "      <td>蔬菜</td>\n",
       "      <td>0.3</td>\n",
       "      <td>第二季</td>\n",
       "      <td>智慧大棚</td>\n",
       "      <td>0.6</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>F4</td>\n",
       "      <td>19</td>\n",
       "      <td>芸豆</td>\n",
       "      <td>蔬菜（豆类）</td>\n",
       "      <td>0.6</td>\n",
       "      <td>第一季</td>\n",
       "      <td>智慧大棚</td>\n",
       "      <td>0.6</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85</th>\n",
       "      <td>F4</td>\n",
       "      <td>34</td>\n",
       "      <td>芹菜</td>\n",
       "      <td>蔬菜</td>\n",
       "      <td>0.3</td>\n",
       "      <td>第二季</td>\n",
       "      <td>智慧大棚</td>\n",
       "      <td>0.6</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>F4</td>\n",
       "      <td>23</td>\n",
       "      <td>菠菜</td>\n",
       "      <td>蔬菜</td>\n",
       "      <td>0.3</td>\n",
       "      <td>第二季</td>\n",
       "      <td>智慧大棚</td>\n",
       "      <td>0.6</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "      <td>豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>87 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   种植地块  作物编号 作物名称    作物类型  种植面积/亩 种植季次  地块类型  地块面积/亩  \\\n",
       "0    A1     6   小麦      粮食    80.0   单季   平旱地    80.0   \n",
       "1    A2     7   玉米      粮食    55.0   单季   平旱地    55.0   \n",
       "2    A3     7   玉米      粮食    35.0   单季   平旱地    35.0   \n",
       "3    A4     1   黄豆  粮食（豆类）    72.0   单季   平旱地    72.0   \n",
       "4    A5     4   绿豆  粮食（豆类）    68.0   单季   平旱地    68.0   \n",
       "..  ...   ...  ...     ...     ...  ...   ...     ...   \n",
       "82   F3    28  小青菜     蔬菜      0.3  第二季  智慧大棚     0.6   \n",
       "83   F3    30  生菜      蔬菜      0.3  第二季  智慧大棚     0.6   \n",
       "84   F4    19   芸豆  蔬菜（豆类）     0.6  第一季  智慧大棚     0.6   \n",
       "85   F4    34   芹菜     蔬菜      0.3  第二季  智慧大棚     0.6   \n",
       "86   F4    23  菠菜      蔬菜      0.3  第二季  智慧大棚     0.6   \n",
       "\n",
       "                                             第一季度可种作物  \\\n",
       "0   黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...   \n",
       "1   黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...   \n",
       "2   黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...   \n",
       "3   黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...   \n",
       "4   黄豆\\n\\n黑豆\\n\\n红豆\\n\\n绿豆\\n\\n爬豆\\n\\n小麦\\n\\n玉米\\n\\n谷子\\n...   \n",
       "..                                                ...   \n",
       "82  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...   \n",
       "83  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...   \n",
       "84  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...   \n",
       "85  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...   \n",
       "86  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...   \n",
       "\n",
       "                                             第二季度可种作物  \n",
       "0                                                      \n",
       "1                                                      \n",
       "2                                                      \n",
       "3                                                      \n",
       "4                                                      \n",
       "..                                                ...  \n",
       "82  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...  \n",
       "83  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...  \n",
       "84  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...  \n",
       "85  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...  \n",
       "86  豇豆\\n\\n刀豆\\n\\n芸豆\\n\\n土豆\\n\\n西红柿\\n\\n茄子\\n\\n菠菜 \\n\\n青椒...  \n",
       "\n",
       "[87 rows x 10 columns]"
      ]
     },
     "execution_count": 329,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 添加两列：对应种植地块第一季度和第二季度能种植的所有作物名称\n",
    "# 也用 \\n\\n 分隔\n",
    "result_df['第一季度可种作物'] = ''\n",
    "result_df['第二季度可种作物'] = ''\n",
    "\n",
    "# 先维护地块类型和可种植季度的字典，再应用到所有种植地块上\n",
    "\n",
    "crops_for_lands_jidu1 = {}\n",
    "crops_for_lands_jidu2 = {}\n",
    "for idx, row in fujian1_sheet2.iterrows():\n",
    "    # print(row)\n",
    "    crop = row['作物名称']\n",
    "    lands_for_crop = row['种植耕地']\n",
    "    lands_for_crop_list = [land.strip() for land in lands_for_crop.split('\\n\\n') if land.strip() != '']\n",
    "    # print(lands_for_crop_list)\n",
    "    for land in lands_for_crop_list:\n",
    "        if '第一季' not in land and '第二季' not in land:\n",
    "            # print(land)\n",
    "            # 认为只能种第一季度\n",
    "            crops_for_lands_jidu1[land] = crops_for_lands_jidu1.get(land, []) + [crop]\n",
    "            # crops_for_lands_jidu2[land] = crops_for_lands_jidu2.get(land, []) + [crop]\n",
    "        elif '第一季' in land and '第二季' in land:\n",
    "            land = land.replace('第一季', '').replace('第二季', '').replace('、', '').strip()\n",
    "            # print(land)\n",
    "            crops_for_lands_jidu1[land] = crops_for_lands_jidu1.get(land, []) + [crop]\n",
    "            crops_for_lands_jidu2[land] = crops_for_lands_jidu2.get(land, []) + [crop]\n",
    "        else:\n",
    "            if '第一季' in land:\n",
    "                land = land.replace('第一季', '').strip()\n",
    "                # print(land)\n",
    "                crops_for_lands_jidu1[land] = crops_for_lands_jidu1.get(land, []) + [crop]\n",
    "            if '第二季' in land:\n",
    "                land = land.replace('第二季', '').strip()\n",
    "                # print(land)\n",
    "                crops_for_lands_jidu2[land] = crops_for_lands_jidu2.get(land, []) + [crop]\n",
    "\n",
    "result_df['第一季度可种作物'] = result_df['地块类型'].map(crops_for_lands_jidu1).apply(lambda x: '\\n\\n'.join(x) if isinstance(x, list) else '')\n",
    "result_df['第二季度可种作物'] = result_df['地块类型'].map(crops_for_lands_jidu2).apply(lambda x: '\\n\\n'.join(x) if isinstance(x, list) else '')\n",
    "\n",
    "result_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 330,
   "id": "263dd0d1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "含有 NaN 值的行：\n",
      "Empty DataFrame\n",
      "Columns: [种植地块, 作物编号, 作物名称, 作物类型, 种植面积/亩, 种植季次, 地块类型, 地块面积/亩, 第一季度可种作物, 第二季度可种作物]\n",
      "Index: []\n"
     ]
    }
   ],
   "source": [
    "# 找到含有 Nan 值的行\n",
    "nan_rows = result_df[result_df[['第一季度可种作物', '第二季度可种作物']].isnull().any(axis=1)]\n",
    "print(\"含有 NaN 值的行：\")\n",
    "print(nan_rows)\n",
    "# result_df.to_csv(r'..\\A\\result_df.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 331,
   "id": "04dbae15",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_df.drop(columns=['作物编号', '作物名称', '作物类型', '种植面积/亩', '种植季次'], inplace=True)\n",
    "result_df.drop_duplicates(inplace=True)\n",
    "result_df.to_csv(r'..\\A\\result_df.csv', index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
